//驼峰命名
//三个注解，表名，指定id，表属性
/*
* @TableName
*.@TableId
*@TableField
*mp加载mapper映射文件更简单，可以在配置文件里配置路径
* */
/*
核心
条件构造器，多几个条件,后期由于死代码被lambda代替
自定义sql,过于复杂的单表查询可以用自定义sql实现
service接口


User user = BeanUtil.copyProperties(userFormDTO, User.class);
//通过反射，将dto转为pojo类
lambad表达式实现查询

mp的批量处理比单个一个个处理速度快10倍,可以发现其实MybatisPlus的批处理是基
于PrepareStatement的预编译模式，然后批量提交，最终在数据库执行时还是会有多条
insert语句，逐条插入数据。SQL类似这样：
Preparing: INSERT INTO user ( username, password, phone, info, balance, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ? )
Parameters: user_1, 123, 18688190001, "", 2000, 2023-07-01, 2023-07-01
Parameters: user_2, 123, 18688190002, "", 2000, 2023-07-01, 2023-07-01
Parameters: user_3, 123, 18688190003, "", 2000, 2023-07-01, 2023-07-01

自动注入的另外一种格式
@RequiredArgsConstructor
 private final IUserService userService;

*/
/*
mp拓展功能
mp代码固定，下载MyBatisPlus插件，利用插件可以快速生成代码
有的时候Service之间也会相互调用，userservice里注入addressservice使用，为了避免出现循环依赖问题，MybatisPlus提供一个
静态工具类：Db，其中的一些静态方法与IService中方法签名基本一致，也可以帮助我们实现CRUD功能：
枚举处理器
json类型处理器
 */
/*
插件里面只需要学一个分页插件，也可用pagehelper
我们以前mybatis实现分页一般基于分页助手，pagehelper
mp里也可以用pagehelper，但要引入额外依赖，mp也有自己的分页插件

一般实战里面的分页，要定义一个分页类，其他常用实体类继承分页类使用，解耦


 */